//
//  DDBaseTableViewController.h
//  DingDongZP
//
//  Created by Jyh on 16/3/13.
//  Copyright © 2016年 iyhjiang.com. All rights reserved.
//

#import "DDBaseViewController.h"


@interface DDBaseTableViewController : DDBaseViewController <UITableViewDelegate,UITableViewDataSource>

@property (strong, nonatomic) NSLock *lock;

/**
 *  显示大量数据的控件
 */
@property (nonatomic, strong) UITableView *tableView;

/**
 *  初始化init的时候设置tableView的样式才有效
 */
@property (nonatomic, assign) UITableViewStyle tableViewStyle;

/**
 *  大量数据的数据源
 */
@property (nonatomic, strong) NSMutableArray *dataSource;

/**
 *  初始化值为0，开始请求的页码
 */
@property (nonatomic) NSInteger startIndexPage;

/**
 *  单页加载的数据个数，默认是20
 */
@property (nonatomic) NSInteger pageCount;

/**
 *  无数据View
 */
@property (strong, nonatomic) UIView *noDataView;
@property (strong, nonatomic) UIImageView *noDataImageView;
@property (strong, nonatomic) UILabel *noDataLabel;

/**
 *  去除iOS7新的功能api，tableView的分割线变成iOS6正常的样式
 */
- (void)configuraTableViewNormalSeparatorInset;

/**
 *  配置tableView右侧的index title 背景颜色，因为在iOS7有白色底色，iOS6没有
 *
 *  @param tableView 目标tableView
 */
- (void)configuraSectionIndexBackgroundColorWithTableView:(UITableView *)tableView;

/**
 *  加载本地或者网络数据源
 */
- (void)loadDataSource;


#pragma mark - Public Methods

/**
 *  添加下拉刷新界面
 */
- (void)addRefreshHeader;

/**
 *  添加上拉加载更多界面
 */
- (void)addRefreshFooter;

/**
 * 设置上拉加载是否显示
 */
- (void)setFooterHidden:(BOOL)hidden;

/**
 *  开始下拉刷新
 */
- (void)beginRefreshHeader;

/**
 *  停止下拉刷新
 */
- (void)endRefreshHeader;

/**
 *  开始上拉加载更多
 */
- (void)beginRefreshFooter;

/**
 *  停止上拉加载更多
 */
- (void)endRefreshFooter;

/**
 *  下拉刷新数据
 */
- (void)loadNewData;

/**
 *  上拉加载更多数据
 */
- (void)loadMoreData;

/**
 *  正在刷新数据
 */
- (BOOL)isRefreshing;

/**
 *  显示无数据View
 *
 *  @param image 无数据Image
 *  @param text  无数据Text提示
 */
- (void)showNoDataViewWithImage:(UIImage *)image text:(NSString *)text;

/**
 *  隐藏掉无数据View
 */
- (void)hideNoDataView;

/**
 *  推下一个页面
 *
 */
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;

@end
